Method and System for Securing Data

ABSTRACT

A method and system for securing user data, or data, possessed by a data owner, are disclosed. In one aspect data is concealed and encrypted to ensure data confidentiality, and may also be signed to ensure data integrity and authenticity. In another aspect accesses to data are controlled by the data owner through a distributed access control system. In another aspect the public keys of users are distributed automatically in a distributed manner, and are controlled by the users owning the corresponding public and private key pairs.

TECHNICAL FIELD

This invention relates to data security, and more particularly relatesto enabling data owners to take control of their data through the use ofencryption and access control in a distributed manner.

BACKGROUND

Data is one of the most important assets for organizations andindividuals. Data loss or data breach can be very costly for bothorganizations and individuals. At the very least, critical data loss orbreach will have a financial impact on organizations of all sizes.

As cloud storage and data sharing and collaboration become cheaper andbetter, more and more organizations and individuals move their data tocloud. This provides a central place for a hacker to break into thesystem to steal data. A cloud administrator with malicious intent mayalso be able to steal data. Examples of data theft and data breaches arenot uncommon, even though all vendors declare that data is safe withthem.

There is a strong need for a method and system that ensure the securityof the data stored in cloud, and enable data owners to take over controlof their own data, even when the data is stored in a public cloud, suchas Google Drive, Microsoft OneDrive and Box, and to share data withother people securely and confidently, knowing only intended people haveaccess to the data. In case of a data breach the impact would be limitedto an individual user instead of system wide.

SUMMARY

Methods and systems are provided to enable data owners to take controlof their data through the use of encryption and access control in adistributed manner that the impact of a data breach will be limited toan individual user, not system wide.

A first aspect of the present invention provides a method for securingdata, comprising: devising a concealing mechanism; concealing, accordingto said concealing mechanism, and encrypting, using a data encryptionkey, said data to generate secure data and metadata, such that said datacan be reconstructed by using said secure data, said metadata and saiddata encryption key in accordance with said concealing mechanism;encrypting said metadata with another encryption key to generateencrypted metadata; saving said secure data and said encrypted metadatato a data store, and associating a unique data identifier with saidsecure data and said encrypted metadata in said data store, such thatsaid secure data and said encrypted metadata are uniquely identifiablein said data store.

A second aspect of this invention provides a system for securing data,comprising: a data store configured to allow said data owner to storedata; a client computer having at least one processor, a networkinterface, and a machine-readable medium storing instructions that, whenexecuted by said at least one processor, cause said at least oneprocessor to perform operations, on behalf of said data owner,comprising: generating a data encryption key; concealing, according to aconcealing mechanism, and encrypting, using said data encryption key,said data to generate secure data and metadata, such that said data canbe reconstructed by using said secure data, said metadata and said dataencryption key in accordance with said concealing mechanism; encryptingsaid metadata with said data encryption key to generate encryptedmetadata; generating a unique data identifier; saving said secure dataand said encrypted metadata to said data store, and associating saidunique data identifier with said secure data and said encrypted metadatain said data store, such that said secure data and said encryptedmetadata are uniquely identifiable in said data store.

A third aspect of this invention provides a system for distributing thepublic key of a user to other users to enable secure data sharing, in adistributed manner, comprising: a client computer having at least oneprocessor, a network interface, a user interface, and a machine-readablemedium; a server, configured to allow users of said server to storedata, share data with other users and grant said other users read-onlyaccess to data in said server, having: at least one processor; a networkinterface configured to receive requests from said network interface onsaid client computer; and a machine-readable medium storing instructionsthat, when requested by said client computer, are executed by said atleast one processor on said server, and cause said at least oneprocessor on said server to perform the operations requested by saidclient computer; wherein said machine-readable medium on said clientcomputer storing instructions that, when executed by said at least oneprocessor on said client computer, cause said at least one processor onsaid client computer to perform operations, including sending requeststo said server when necessary, on behalf of a user, comprising:uploading the public key of a public and private key pair owned by saiduser to said server; selecting one or more users by said user using saiduser interface on said client computer; sharing said public key, storedon said server, with said one or more users, and granting said one ormore users read-only access to said public key; thereby said public keyis made accessible to said one or more users; and said user controls whoare allowed to access said public key, thus controls who are allowed toshare data securely with said user.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 depicts an operating environment in at least one embodiment.

FIG. 2 depicts the data concealing process that produces concealed dataand metadata in at least one embodiment.

FIG. 2A depicts data, metadata and concealed data in at least oneembodiment.

FIG. 2B depicts an example of user data or data for illustrationpurpose.

FIG. 2C depicts examples of data items and concealed items generatedfrom the example data according to a concealing mechanism.

FIG. 2D depicts examples of metadata items generated from the exampledata according to a concealing mechanism.

FIG. 3 depicts the concealed data and metadata encrypting process thatproduces secure data and encrypted metadata in at least one embodiment.

FIG. 3A depicts secure data in at least one embodiment.

FIG. 4 depicts secure data set in at least one embodiment.

FIG. 4A depicts the secure data set generated from the example data.

FIG. 4B depicts secure data set container in at least one embodiment.

FIG. 5 depicts data access object in at least one embodiment.

FIG. 5A depicts recipient and access permission in at least oneembodiment.

FIG. 5B depicts examples of access permission with permission role andrecipient encryption key Id.

FIG. 6 depicts the process of generating data access token in at leastone embodiment.

FIG. 6A depicts data access tokens stored in a container of a data storein at least one embodiment.

FIG. 7 depicts a server used as data store in at least one embodiment.

FIG. 8 depicts distributing the public key from a recipient owning apublic and private key pair to a data owner in at least one embodiment.

FIG. 9 depicts a schematic block diagram illustrating one embodiment ofa computer system that may be used in accordance with certainembodiments of the system for securing user data or data.

FIG. 9A depicts a client computer and a local data storage in at leastone embodiment.

FIG. 9B depicts a client computer used by a data owner, a server as datastore, and a second client computer used by a recipient in at least oneembodiment.

FIG. 9C depicts a server farm as server and data store in at least oneembodiment.

DETAILED DESCRIPTION

As will be appreciated by one skilled in the art, aspects of the presentinvention may be embodied as methods, systems or computer programproducts. This section describes in details embodiments of the inventionand references the drawings. The embodiments described herein are by wayof example only and that the scope of the invention is not intended tobe limited thereby.

FIG. 1 illustrates an operating environment in which a data owner 100stores user data or data 101 in a data store 161 in such a secure mannerthat the data owner 100 has control over the data no matter what thedata store 161 is and where it is located, and only the intendedrecipients 521 have access to the data. Data 101 goes through aprotecting process before it reaches data store 161. In at least oneembodiment, data store 161 may be a local hard disk, a writable CD disk,a database or a cloud storage system, or any other type of storagesystem.

Refer to FIG. 2 and FIG. 3, in at least one embodiment, the protectingprocess is a combination of data concealing according a concealingmechanism and data encryption with one or more encryption keys.

As illustrated in FIG. 2, according to at least one embodiment, aconcealing mechanism 203 is devised based on the type of the originaldata 101 to be secured. Its main purpose is to transform original data101 to a different form and to extract metadata 223 from the originaldata, so that the original data can be reconstructed by using thetransformed data, called concealed data 221, and the extracted metadata223. The concealed data 221 and the metadata 223 are then encrypted toensure confidentiality. In addition, the concealing mechanism 203 mayalso transform the data 101, in at least one embodiment, to make it moresuitable for storing. For example, a huge file may be split into smallerchunks before it is encrypted and uploaded to a cloud storage.

In some embodiments, data 101 comprises one or more data item 1011 asshown in FIG. 2A, and a concealing mechanism 203 transforms data 101 toconcealed data 221 that is a collection of concealed items 2211 andtheir corresponding unique identifiers or Ids 2213, and generatesmetadata 223 that is a collection of metadata items 2231 correspondingrespectively to data items 1011 of data 101.

As an example, the data 101 we use in the following description is alocal folder named “Folder #1” in a local computer file system asillustrated in FIG. 2B. This example data 101 contains a total of sevendata items 1011, which are, two folders (named “Folder #2” and “Folder#3”), one large file (named “Large File”), one regular file (named“Regular File”) and three small files (named “Small File #1”, “SmallFile #2” and “Small File #3”). The concealing mechanism 203 for thisexample comprises the following:

-   -   1. Define a minimum size and a maximum size for files; and use        the counting numbers (that is 1, 2, 3, 4, 5, and so on), called        numbers for short from now on, as Ids 2213 of concealed items        2211;    -   2. Enumerate through all the files and folders, i.e. all data        items 1011, within “Folder #1”, i.e. data 101;    -   3. Pick a data item 1011, that is either a file or a folder;    -   4. Create a metadata item 2231 comprising the relative path, the        type and the timestamps of the data item 1011;    -   5. If the data item 1011 is a file, then the metadata item 2231        also comprises the size and hash value of the data item 1011,        and the file is transformed or concealed in the following        manner:        -   a. if the size of the file is greater than the defined            maximum size, it is called a “large file”, and its content            is split into two or more chunks, where the size of each            chunk is no greater than the defined maximum size; each            chunk is called a concealed item 2211, and is assigned a            unique number as its Id 2213; store all unique number Ids            2213 corresponding respectively to the chunks in the            metadata item 2231, and in the order the content is split;        -   b. if the size of the file is smaller than the defined            minimum size, it is called a “small file”; the content of            the “small file” is packed into a “small file container”            having a unique number Id 2213, and is given a unique name            within the container; store the unique number Id 2213 and            the unique name in the metadata item 2231; the number of            “small files” within the container grows as new small files            are added to the container until the total size of all            “small files” within the container is greater than or equal            to the defined maximum size; at this point the “small file            container” is then sealed and called a concealed item 2211,            and its assigned unique number is its Id 2213; a new “small            file container” is created as needed to accommodate new            “small files”, and is assigned a new unique number as its Id            2213;        -   c. if the size of the file is between the defined minimum            and maximum sizes, it is called a “regular file”; the            content of the file becomes a concealed item 2211 and is            assigned a unique number as its Id 2213; store the unique            number Id 2213 in the metadata item 2231;    -   6. Go back to step 3 until done with all files and folders under        “Folder #1”.

After applying the above concealing mechanism 203 to the example data101 illustrated in FIG. 2B, concealed data 221 and metadata 223corresponding to the example data 101 are generated and illustrated inFIG. 2C and FIG. 2D.

The concealed items 2211 corresponding to the example data areillustrated in FIG. 2C. For the regular file named “Regular File”, thereis one corresponding concealed item 2211, associated with number 1 asits Id. For the large file named “Large File”, there are twocorresponding concealed items 2211, associated with numbers 2 and 3 astheir Ids 2213 respectively. The three small files “Small File #1”,“Small File #2” and “Small File #3” are packed into a “small filecontainer” as concealed item 2211 associated with number 5 as its Id2213. Inside the “small file container” stores the contents of the threesmall files identified by the three globally unique identifiers, orGUIDs, as their unique names respectively. Because multiple “smallfiles” are packed into one “small file container” and some data itemsare folders, the total number of concealed items 2211 is no greater thanthe total number of data items 1011. The number Id 2213 associated witheach concealed item 2211 can be sequential or random as long as they areunique within the concealed data 221.

As illustrated in FIG. 2D, each metadata item 2231 comprises the pathrelative to “Folder #1”, the type and the timestamps (may includecreation time, last access time and last write time) of thecorresponding data item 1011. If a data item 1011 is a file, its itemmetadata 2231 also comprises the size, the hash value and therelationship with concealed items 2211 within the correspondingconcealed data 221, wherein the relationship is illustrated as a numberor numbers or a number and a GUID enclosed in parentheses. For theexample data 101, the metadata item 2231 corresponding to the regularfile named “Regular File” has the number 1 enclosed in parentheses,indicating that there is only one associated concealed item 2211identified by the unique Id 1; the metadata item 2231 corresponding tothe large file named “Large File” has two numbers 2 and 3 enclosed inparentheses, indicating that there are two associated concealed items2211 identified by the unique Ids 2 and 3 respectively and in thatorder; the metadata item 2231 corresponding to the small file named“Small File #2” has the number 5 along with a GUID03AA505D-4B3C-44D2-82E6-09F4AC771D74 enclosed in parentheses, indicatingthat there is only one associated concealed item 2211 that is a smallfile container, and that the content of the small file is stored in thesmall file container and is identified by the specified GUID within thecontainer. The metadata item 2231 for the folder named “Folder #3” isalso illustrated in FIG. 2D. The total number of metadata items 2231 is7 since the total number of data items 1011 is 7.

Refer to FIG. 2A, FIG. 3 and FIG. 3A, in at least one embodiment,concealed data 221 is encrypted by using a data encryption key 301,obtained or randomly generated, to generate secure data 321. Encryptingconcealed data 221 to generate secure data 321 comprises:

-   -   1. Enumerating through concealed items 2211 within concealed        data 221;    -   2. Picking a concealed item 2211, compress it and then encrypt        it with the data encryption key 301 to generate encrypted item        3211, and associating the encrypted item 3211 with the Id 2213        of the corresponding concealed item 2211;    -   3. Go back to step 2 until all concealed items 2211 within        concealed data 221 are processed.

The metadata 223 is encrypted with another encryption key 303 togenerate encrypted metadata 323. In at least one embodiment, the anotherencryption key 303 is the same as the data encryption key 301 tosimplify encryption key management.

As illustrated in FIG. 4, in at least one embodiment, the secure data321 and the encrypted metadata are associated with a unique dataidentifier 325, therefore when stored in data store 161, the secure data321 and the encrypted metadata 323 are uniquely identified with theunique data identifier 325. In at least one embodiment, the unique dataidentifier 325 is randomly generated. In another embodiment, the uniquedata identifier 325 is a globally unique identifier, or GUID. The securedata 321, the encrypted metadata 323 and their associated unique dataidentifier 325 are collectively called a secure data set 421, in orderto simplify the description hereafter.

In at least one embodiment, the data store 161 is a local file systemconfigured to store files and folders in a hierarchical structure. Asillustrated in FIG. 4A, the secure data 321 and the encrypted metadata323 for the example data described earlier are stored under a foldernamed after the unique data identifier 325 that is a GUID. All fourencrypted items 3211 are stored under the folder as files named afterthe Ids 2213 of the four encrypted items 3211, that is, “1”, “2”, “3”and “5”, respectively. The encrypted metadata 323 is stored under thesame folder as a file named “0” to differentiate it from the fourencrypted items 3211.

Refer to FIG. 4B, in at least one embodiment, secure data sets 421 arestored in a secure data set container within a data store 161, and theremay be more than one secure data set container within the data store161. For example, if the data store 161 is a local file system a securedata set container may a be folder within the local file system.

In at least one embodiment, the data store 161 is a cloud based storagesystem, configured to store files and folders in a hierarchicalstructure. Similar arrangement as described above can be used to storesecure data 321 and encrypted metadata 323 along with the associatedunique data identifier 325.

After learning how to store the secure data 321, the encrypted metadata323, and their associated unique data identifier 325 in a file systembased data store and a cloud based data store, it becomes obvious forthose skilled in the art to understand how to store them in, forexample, a relational database, SharePoint, or any other types ofstorages.

In a preferred embodiment, metadata 223 is digitally signed by using theprivate key owned by data owner 100, before it is encrypted to generateencrypted metadata 323, so that any unauthorized changes to data 101 aredetectable.

The steps of concealing and encrypting processes are describedseparately above to make it easier to understand. In a preferredembodiment, they are combined to avoid persisting unnecessaryintermediate data.

After reading the descriptions above, and understanding how concealingand encrypting processes work it becomes obvious for those skilled inthe art to understand how decrypting and revealing processes work.

Distributed Access Control

In at least one embodiment, a data access token is used to ensure thatthe data, possessed by a data owner, is only accessible to one or moreintended recipients selected by the data owner. Refer to FIG. 5A, in atleast one embodiment, a recipient 521 comprises a recipient Id 5211, arecipient encryption key 5215, and may also comprise a recipient name5213. Refer to FIG. 5 and FIG. 6, according to at least one embodiment,the data access token 611 is generated by encrypting a data accessobject 501 that comprises the data encryption key 301, using one or morerecipient encryption keys 5215. In at least one embodiment, the one ormore recipient encryption keys 5215 are owned by the one or morerecipients 521 respectively, and made accessible to the data owner 100by the one or more recipients 521 respectively.

Refer to FIG. 5 again, in at least one embodiment, the data accessobject 501 further comprises one or more access permissions 505corresponding respectively to the one or more recipient encryption keys5215. Refer to FIG. 5A, an access permission 505 comprises a permissionrole 5051 assigned, by the data owner, to the corresponding recipientencryption key 5215. The permission role 5051, in at least oneembodiment, comprises a reader role allowing read-only access to data, awriter role allowing read-write access to data, and an owner roleallowing read-write access to data as well as changing accesspermissions of the data. Refer to FIG. 5A again, in at least oneembodiment, access permission 505 further comprises the recipientencryption key Id 5053 of the recipient encryption key 5215. In at leastone embodiment, access permission 505 further comprises the recipient Id5211 of the corresponding recipient 521.

In at least one embodiment, the one or more recipient encryption keys5215 are the public keys of one or more public and private key pairsowned by the one or more recipients 521, respectively. Therefore, theone or more recipients 521 have access to the data encryption key 301 bydecrypting, using their private keys, the data access token 611, andextracting the data encryption key 301 from the decrypted data accessobject 501, thus have access to the data.

In at least one embodiment data owner is selected as a recipient, andthe public key of the public and private key pair, owned by the dataowner, is used as the recipient encryption key 5215 of the data owner,participating in encrypting the data access object 501; therefore, thedata owner can decrypt the data access token 611 and gain access to theencryption key 301.

In a preferred embodiment, encrypting data access object 501 is done byusing digital enveloping which is well known in the field. In essence, asession key, that is a symmetric key, is generated and used to encrypt aprivate message. The session key is itself then encrypted by using thepublic keys of the recipients. The combination of the encrypted messageand the encrypted session key constitutes the digital envelope. Uponreceipt, the session key is decrypted by using one of the private keysof the recipients. The encrypted message is then decrypted by using thesession key.

In at least one embodiment, if the public key of a recipient 521 is notavailable or accessible to the data owner a temporary public and privatekey pair is generated, and made accessible to the recipient. The publickey of the temporary public and private key pair is then used as therecipient encryption key 5215 of the recipient 521, participating inencrypting the data access object 501. Therefore, the recipient 521,having access to the temporary public and private key pair, can decryptthe data access token 611 to access the data encryption key 301, andthus gain access to the data. In at least one embodiment, the temporarypublic and private key pair is locked by a password chosen by the dataowner, and shared with the recipient.

Refer to FIG. 5, in at least one embodiment, data access object 501further comprises a creation time 507 and a valid period 509 of the dataaccess object 501, indicating when the data access object 501 is createdand how long it remains valid, used to enforce how long the recipientshave access to the data.

In at least one embodiment, data access object 501 is digitally signedthe private key of the data owner before being encrypted so that theintegrity and authenticity of data access object 501 can be verified.

In at least one embodiment, data access token 611 is associated with theunique data identifier 325 corresponding to the secure data 321 andencrypted metadata 323, and stored in data store 161. In one embodimentdata access token 611 is stored as a file named after the unique dataidentifier 325 in data store 161. In another embodiment data accesstoken 611 is stored in a data access token container within a data store161 as illustrated in FIG. 6A.

In at least one embodiment, the permission role of an access permission505 within data access object 501, obtained by decrypting data accesstoken 611 at recipient side, is enforced by a computer program runningon a computer of the corresponding recipient.

Refer to FIG. 7, in at least one embodiment, the data store 161 is aserver configured to allow a user of the server that is a data owner100, to store data and share the data with other users that arerecipients 521, selected by the data owner, and grant each recipient 521different levels of access to shared data. The levels of access mayinclude read-only access and read-write access.

A user of the server may have an associated account in the system. Theterms “user”, “data owner”, and “recipient” may reference the account ofa user, the account of a data owner, and the account of a recipient,respectively, if that does not cause confusion.

As described earlier, in at least one embodiment, data access token 611is generated by encrypting data access object 501 that comprises one ormore access permissions 505 corresponding respectively to one or morerecipients 521 selected by the data owner 100. Refer to FIG. 7, afterstoring data access token 611, secure data 321, encrypted metadata 323,and the associated unique data identifier 325 in data store 161, in oneor more embodiments, data access token 611 stored in the server isshared with the recipients 521 corresponding to the access permissions505 of the data access object 501, and the recipients 521 are grantedread-only access to the data access token 611, so the recipients 521 canonly read but not alter the data access token 611 in the server; securedata 321 and encrypted metadata 323 are also shared with the one or morerecipients 521, and each of the one or more recipients 521 is grantedaccess to secure data 321 and encrypted metadata 323 based on theassigned permission role 5051 of the access permission 505 of therecipient encryption key 5215 corresponding to the recipient; if theassigned permission role 5051 is a reader role the recipient is grantedread-only access, if the assigned permission role 5051 is a writer rolethe recipient is granted read-write access. Thereby data access token611, secure data 321 and encrypted metadata 323 are made accessible tothe intended recipients 521 by the data owner 100.

In at least one embodiment, according to the description above,permission roles 5051 of access permissions 505 within a data accessobject 501 are enforced at both data level, by a computer programrunning on a computer at recipient side, and system level, by settingaccess permissions to data access token 611, secure data 321 andencrypted metadata 323 in data store 161.

In at least one embodiment, the data store 161 is a server configured toallow a user of the server to store data, share the data with one ormore others users, and grant the one or more others users read-onlyaccess to data.

Refer to FIG. 8, in at least one embodiment, a recipient encryption key5215, illustrated in FIG. 6, is the public key of the public and privatekey pair 523 owned by a recipient 521. To make the public key accessibleto data owner 100, recipient 521 uploads the public key to data store161 and grants data owner 100 read-only access to the public key.Thereby data owner 100 has access to recipient encryption key 5215 thatis a public key owned by recipient 521, and data owner can then sharedata with recipient 521 securely, as described earlier.

In at least one embodiment, recipient 521 may grant more than one user,potential data owners sharing data with the recipient 521, read-onlyaccess to recipient encryption key 5215 that is a public key owned byrecipient 521. Recipient 521 has complete control of who can access thepublic key, thus controlling who is/are allowed to share data withrecipient 521 securely.

In at least one embodiment, recipient 521 may generate a new public andprivate key pair, and upload the public key of the new key pair to datastore 161 as recipient encryption key 5215. In at least one embodiment,when a new public key is uploaded, the old public key is kept. In atleast one embodiment, all old/used public keys are stored in a dedicatedcontainer within the data store 161.

Embodiments of the invention also relate to a system for performing theoperations herein. The system may be specially constructed for therequired purposes, or it may comprise a general-purpose computerselectively activated or reconfigured by a computer program. Such acomputer program may be stored in a non-transitory computer readablestorage medium, such as, but not limited to, any type of disks includingoptical disks, random access memories, magnetic or optical cards, flashmemories, or any type of media suitable for storing electronicinstructions.

FIG. 9 is a schematic block diagram illustrating one embodiment of acomputer system 961 configurable for securing user data or data,possessed by a data owner. As illustrated, computer system 961 includesone or more programmable processors, or processors 963 coupled to amemory 965 via bus 967. Computer system 961 further includes networkinterface 969 coupled to bus 967, and input/output (I/O) controller(s)971, coupled to devices such as keyboard 981, mouse 983, and display(s)985. In various embodiments, computer system 961 may be a server, amainframe computer system, a cloud computing system, a workstation, anetwork computer, a desktop computer, a laptop, or the like.

Memory 965 may be configured to store instructions and/or dataaccessible by the one or more processors 963. In various embodiments,system memory 965 may be implemented using any suitable memorytechnology, such as static random access memory (SRAM), synchronousdynamic RAM (SDRAM), nonvolatile/flash-type memory, or any other type ofmemory. As illustrated, program instructions and data implementingcertain operations, such as, for example, those described above, may bestored within memory 965 as program instructions, or instructions 9651and data 9653, respectively. In other embodiments, program instructions9651 and/or data 9653 may be received, sent or stored upon differenttypes of computer-accessible media or on similar media separate fromsystem memory 965 or computer system 961. Generally speaking, acomputer-accessible medium may include any tangible, non-transitorystorage media or memory media such as electronic, magnetic, or opticalmedia, e.g. disk or CD/DVD-ROM coupled to computer system 961, ornon-volatile memory storage (such as “flash” memory).

Network interface 969 may be configured to allow data to be exchangedbetween computer systems 961 and other devices. In at least oneembodiment, network interface 969 may be configured to send instructionsto other computer systems or other devices having network interfaces torequest other computer systems or other devices to complete certainoperations. In various embodiments, network interface 969 may supportcommunication via wired or wireless general data networks.

I/O controller(s) 971 may, in some embodiments, enable connection to oneor more display terminals, keyboards, keypads, touch screens, scanningdevices, voice or optical recognition devices, or any other devicessuitable for entering or retrieving data by one or more computer system961. Multiple input/output devices may be present in computer system 961or may be distributed on various nodes of computer system 961. In someembodiments, similar I/O devices may be separate from computer system961 and may interact with computer system 961 through a wired orwireless connection, such as over network interface 969.

The user interface of a computer system constitutes hardware andsoftware that enables a human to interact with the computer system,giving instructions and receiving outputs. The user interface, in atleast one embodiment, may include keyboard 981, mouse 983, display(s)985 and other I/O devices 987, as well as drivers, operating system andapplication programs running on the computer system. For example, a dataowner may use the user interface to choose intended data recipients, anda data recipient may use the user interface to choose other users,potential data owners sharing data with the recipient, with whom toshare public key of the recipient.

Refer to FIG. 9A, in at least one embodiment, the system comprises aclient computer 993 and a data store 161 that is a local data storage.The local data storage may be attached to or part of client computer993, and is configured to store data access token 611, encryptedmetadata data 323 and secure data 321 in association with unique dataidentifier 325. Example local storages may include, but not limited to,hard disks, USB drives, network shares, or any type of local storage.

In some embodiments, the client computer 993 may be implemented using asingle instance of computer system 961, while in other embodimentsmultiple such systems or multiple nodes making up computer system 961,may be configured to host different portions or instances ofembodiments.

Refer to FIG. 9B, in at least one embodiment, the system comprises aclient computer 993 and a data store 161 that is a server 991,configured to perform the operations described earlier, when requestedby client computer 993. Elements of the server 991 may be implementedusing at least one instance of computer system 961, configured to hostsome portions or instances of embodiments. As illustrated in FIG. 9C, inat least one embodiment, the server 991 is a server farm comprising aplurality of computer systems 961 hosting some portions or instances ofembodiments.

Refer to FIG. 9B again, in at least one embodiment, the system furthercomprises a second client computer 995, used by a recipient 521 toreceive data from data owner 100 securely. The second client computer995 may be implemented using a single instance of computer system 961,while in other embodiments multiple such systems or multiple nodesmaking up computer system 961, may be configured to host differentportions or instances of embodiments.

A person of ordinary skill in the art will appreciate that computersystem 961 is merely illustrative and is not intended to limit the scopeof the disclosure described herein. In particular, the computer systemand devices may include any combination of hardware or software that canperform the indicated operations. In addition, the operations performedby the illustrated components may, in some embodiments, be performed byfewer components or distributed across additional components. Similarly,in other embodiments, the operations of some of the illustratedcomponents may not be performed and/or other additional operations maybe available. Accordingly, systems and methods described herein may beimplemented or executed with other computer system configurations.

Further, in some instances, well-known structures and devices are shownin block diagram form, rather than in detail, in order to avoidobscuring the present invention.

The embodiments of the present invention have been described largely byreference to specific examples and in terms of particular allocations offunctionality to certain hardware and/or software components. Many otherembodiments will be apparent to those skilled in the art upon readingand understanding the above description. Therefore, the scope of theinvention should be determined with reference to the appended claims,along with the full scope of equivalents to which such claims areentitled.

What is claimed is:
 1. A method for securing user data, or data,possessed by a data owner, comprising: a. devising a concealingmechanism; b. concealing, according to said concealing mechanism, andencrypting, using a data encryption key, said data to generate securedata and metadata, such that said data can be reconstructed by usingsaid secure data, said metadata and said data encryption key inaccordance with said concealing mechanism; c. encrypting said metadatawith another encryption key to generate encrypted metadata; d. savingsaid secure data and said encrypted metadata to a data store, andassociating a unique data identifier with said secure data and saidencrypted metadata in said data store, such that said secure data andsaid encrypted metadata are uniquely identifiable in said data store. 2.The method of claim 1, wherein said another encryption key is the sameas said data encryption key.
 3. The method of claim 2, furthercomprising: a. generating a data access object, wherein said data accessobject comprises said data encryption key; b. obtaining one or morerecipient encryption keys; c. encrypting said data access object byusing said one or more recipient encryption keys to generate a dataaccess token; d. saving said data access token to said data store, andassociating said data access token with said unique data identifier. 4.The method of claim 3, wherein said data access object further comprisesone or more access permissions corresponding respectively to said one ormore recipient encryption keys, wherein each of said one or more accesspermissions comprises a permission role assigned by said data owner. 5.The method of claim 4, wherein said permission role comprises a readerrole and a writer role, wherein said reader role allows read-only accessto data, and said writer role allows read-write access to data.
 6. Themethod of claim 5, wherein said data access object further comprises acreation time and a valid period, indicating when said data accessobject is created and how long said data access object remains valid. 7.The method of claim 5, further comprising: making the public key of apublic and private key pair accessible to said data owner by a recipientowning said public and private key pair.
 8. The method of claim 7,wherein said obtaining one or more recipient encryption keys,comprising: a. selecting one or more recipients; b. retrieving thepublic keys of said one or more recipients and the public key of saiddata owner as said recipient encryption keys; thereby said data accesstoken can only be decrypted by using one of the private keyscorresponding to said public keys, respectively.
 9. The method of claim8, wherein each of said access permissions, further comprising: theidentifier or Id of the recipient encryption key corresponding to eachof said access permissions.
 10. The method of claim 9, wherein said datastore is configured to allow said data owner to store data, share datawith said one or more recipients, and grant said one or more recipientsread-only or read-write access to data in said data store, furthercomprising: at sharing side, said data owner a. sharing said data accesstoken with said one or more recipients, and granting said one or morerecipients read-only access to said data access token, such that saidone or more recipients can only read but not alter said data accesstoken stored in said data store; and b. sharing said secure data andsaid encrypted metadata with said one or more recipients, and grantingeach of said one or more recipients, read-only access if the permissionrole of the access permission corresponding to the recipient encryptionkey of the recipient is reader, or read-write access if the permissionrole of the access permission corresponding to the recipient encryptionkey of the recipient is writer, such that said one or more recipientshave proper accesses to said secure data and said encrypted metadatastored in said data store; at receiving side, a recipient a. retrievingsaid data access token from said data store, and decrypting said dataaccess token by using the private key corresponding to the public key ofsaid recipient to obtain said data access object; b. retrieving saidencrypted metadata from said data store, and decrypting said encryptedmetadata by using said data encryption key obtained from said dataaccess object; c. retrieving said secure data from said data store, andreconstructing said data by using said secure data retrieved from saiddata store, the decrypted metadata and the data encryption key obtainedfrom said data access object in accordance with said concealingmechanism; thereby said recipient receives said data in a secure manner.11. The method of claim 10, at receiving side, further comprising: a.retrieving the permission role corresponding to said recipient from thedecrypted data access object; thereby a computer program, running on aclient computer of said recipient, can enforce said permission rolegranted to said recipient.
 12. The method of claim 10, wherein makingthe public key of a public and private key pair accessible to said dataowner by a recipient owning said public and private key pair,comprising: a. uploading, by said recipient, said public key to saiddata store; b. sharing said public key in said data store, by saidrecipient, with said data owner; c. granting said data owner, by saidrecipient, read-only access to said public key in said data store;thereby said public key owned by said recipient is accessible to saiddata owner.
 13. The method of claim 12, wherein said retrieving thepublic keys of said one or more recipients, if the public key of arecipient is not available to said data owner, comprising: a. generatinga temporary public and private key pair; b. using the public key of saidtemporary public and private key pair as said recipient encryption keyof said recipient; c. making said temporary public and private key pairaccessible to said recipient; thereby said recipient can decrypt, byusing the private key of said temporary public and private key pair,said data access token to gain access to said data encryption key, thusgain access to data.
 14. The method of claim 13, wherein making saidtemporary public and private key pair accessible to said recipient,comprising: a. uploading said temporary public and private key pair tosaid data store; b. sharing said temporary public and private key pairwith said recipient.
 15. A system for securing user data or data,possessed by a data owner, comprising: a data store configured to allowsaid data owner to store data; a client computer having at least oneprocessor, a network interface, and a machine-readable medium storinginstructions that, when executed by said at least one processor, causesaid at least one processor to perform operations, on behalf of saiddata owner, comprising: a. generating a data encryption key; b.concealing, according to a concealing mechanism, and encrypting, usingsaid data encryption key, said data to generate secure data andmetadata, such that said data can be reconstructed by using said securedata, said metadata and said data encryption key in accordance with saidconcealing mechanism; c. encrypting said metadata with said dataencryption key to generate encrypted metadata; d. generating a uniquedata identifier; e. saving said secure data and said encrypted metadatato said data store, and associating said unique data identifier withsaid secure data and said encrypted metadata in said data store, suchthat said secure data and said encrypted metadata are uniquelyidentifiable in said data store.
 16. The system of claim 15, whereinsaid client computer further comprising a user interface, and saidmachine-readable medium storing additional instructions that, whenexecuted by said at least one processor, cause said at least oneprocessor to perform operations, on behalf of said data owner,comprising: a. selecting, by said data owner using said user interface,one or more recipients, each having a public and private key pair andhaving made the public key of said key pair accessible to said dataowner; b. retrieving the public keys of said one or more recipients,respectively, and the public key of said data owner, as recipientencryption keys; c. generating a data access object, comprising saiddata encryption key, and one or more access permissions correspondingrespectively to said one or more recipients, wherein each of said one ormore access permissions comprises a permission role assigned by saiddata owner using said user interface, wherein said permission rolecomprises a reader role and a writer role, wherein said reader roleallows read-only access to data, and said writer role allows read-writeaccess to data; d. encrypting said data access object by using saidrecipient encryption keys to generate a data access token; e. savingsaid data access token to said data store, and associating said dataaccess token with said unique data identifier.
 17. The system of claim16, wherein said data store is a server, configured to allow said dataowner to store data, share data with said one or more recipients andgrant said one or more recipients read-only or read-write access to datain said data store, having: a. at least one processor; b. a networkinterface configured to receive requests from said network interface onsaid client computer; and c. a machine-readable medium storinginstructions that, when requested by said client computer, are executedby said at least one processor on said server, and cause said at leastone processor on said server to perform the operations requested by saidclient computer.
 18. The system of claim 17, wherein saidmachine-readable medium on said client computer storing additionalinstructions that, when executed by said at least one processor on saidclient computer, cause said at least one processor on said clientcomputer to perform operations, including sending requests to saidserver when necessary, on behalf of said data owner, comprising: a.sharing said data access token with said one or more recipients, andgranting said one or more recipients read-only access to said dataaccess token, such that said one or more recipients can only read butnot alter said data access token stored in said data store; and b.sharing said secure data and said encrypted metadata with said one ormore recipients, and granting each of said one or more recipients,read-only access if the permission role of the access permissioncorresponding to the recipient encryption key of the recipient isreader, or read-write access if the permission role of the accesspermission corresponding to the recipient encryption key of therecipient is writer, such that said one or more recipients have properaccesses to said secure data and said encrypted metadata stored in saiddata store.
 19. The system of claim 18, further comprising: a secondclient computer having at least one processor; a network interface; anda machine-readable medium storing instructions that, when executed bysaid at least one processor on said second client computer, cause saidat least one processor on said second client computer to performoperations, including sending requests to said server when necessary, onbehalf of a recipient, comprising: a. retrieving said data access tokenfrom said data store, and decrypting said data access token by using theprivate key corresponding to the public key of said recipient to obtainsaid data access object; b. retrieving said encrypted metadata from saiddata store, and decrypting said encrypted metadata by using said dataencryption key obtained from said data access object; c. retrieving saidsecure data from said data store, and reconstructing said data by usingsaid secure data retrieved from said data store, the decrypted metadataand the data encryption key obtained from said data access object inaccordance with said concealing mechanism.
 20. A system for distributingpublic keys to enable secure data sharing in a distributed manner,comprising: a client computer having at least one processor, a networkinterface, a user interface, and a machine-readable medium; a server,configured to allow users of said server to store data, share data withother users and grant said other users read-only access to data in saidserver, having: a. at least one processor; b. a network interfaceconfigured to receive requests from said network interface on saidclient computer; and c. a machine-readable medium storing instructionsthat, when requested by said client computer, are executed by said atleast one processor on said server, and cause said at least oneprocessor on said server to perform the operations requested by saidclient computer; wherein said machine-readable medium on said clientcomputer storing instructions that, when executed by said at least oneprocessor on said client computer, cause said at least one processor onsaid client computer to perform operations, including sending requeststo said server when necessary, on behalf of a user, comprising: a.uploading the public key of a public and private key pair owned by saiduser to said server; b. selecting one or more users by said user usingsaid user interface on said client computer; c. sharing said public key,stored on said server, with said one or more users, and granting saidone or more users read-only access to said public key; thereby saidpublic key is made accessible to said one or more users; and said usercontrols who are allowed to access said public key, thus controls whoare allowed to share data securely with said user.